<?php

namespace App\Http\Services;

use AlibabaCloud\SDK\Captcha\V20230305\Models\VerifyCaptchaRequest;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Captcha\V20230305\Captcha;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class CaptchaService extends BaseService {


    public static function captchaVerify($jsonString)
    {
        try {

            $config = new Config([
                    // 您的AccessKey ID
                    "accessKeyId"     => env('ALI_YUN_ACCESS_KEY_ID'),
                    // 您的AccessKey Secret
                    "accessKeySecret" => env('ALI_YUN_ACCESS_KEY_SECRET'),
                ]);

            // 访问的域名
            $config->endpoint = env('ALI_YUN_ENDPOINT');

            //实例化一个客户端，从 AlibabaCloud\SDK\Captcha\V20230305\Captcha 类生成对象 client 。从 Client 类中生成对象 client 。
            $client = new Captcha($config);

            //初始化 RuntimeOptions ，该步骤可忽略。
            $runtime = new RuntimeOptions();
            $runtime->maxIdleConns = 3;
            $runtime->connectTimeout = 10000;
            $runtime->readTimeout = 10000;

            //创建对应 API 的 Request 。 类的命名规则为 API 方法名加上 Request 。例如：
            $request = new VerifyCaptchaRequest();

            // 该参数值为假设值，请您根据实际情况进行填写
            $request->captchaVerifyParam = $jsonString;

            $response = $client->verifyCaptcha($request, $runtime);

            //通过client对象获得对应 request 响应 response 。

            //$response = $response->toMap();

            //var_dump('$response->toMap()',$response->toMap());die;

            //调用 response->Body 中对应的属性获得返回的参数值。 假设您需要获取 requestId ;
            //var_dump('$response->Body->requestId',$response->Body->requestId);

            return $response->toMap();

        }catch (TeaUnableRetryError $e) {
            // 获取报错数据
            var_dump($e->getErrorInfo());
            // 获取报错信息
            var_dump($e->getMessage());
            // 获取最后一次报错的 Exception 实例
            var_dump($e->getLastException());
            // 获取最后一次请求的 Request 实例
            var_dump($e->getLastRequest());

            logger('captchaVerify error : $e->getErrorInfo() = ' . $e->getErrorInfo() . "\n"
                . 'captchaVerify error : $e->getMessage() = ' . $e->getMessage() . "\n"
                . 'captchaVerify error : $e->getLastException() = ' . $e->getLastException() . "\n"
                . 'captchaVerify error : $e->getErrorInfo() = ' . $e->getErrorInfo());

            return false;
        }

    }




}